### global 和 nonlocal关键字
# 当内部作用域想修改外部作用域的变量时，就要用到 global 和 nonlocal 关键字了。

# 以下实例修改全局变量 num

num = 1
def change_num(num1,num2):
    global num                  #  global 关键字声明；需要放在最前面，否则报错
    print(num)
    num = num1+num2
    print(num)

change_num(2,3)
print(num)

print('')
### 如果要修改嵌套作用域（enclosing 作用域，外层非全局作用域）中的变量则需要 nonlocal 关键字了，如下实例：

def change_var():
    number = 100
    def change_inner(n1,n2):
        nonlocal number         # nonlocal 关键字声明
        print(number)
        number = n1 +n2
        print(number)
    change_inner(9,10)
    print(number)

change_var()

print('')


### 另外有一种特殊情况，假设下面这段代码被运行：
a = 1011011
def change_value():
    global a
    print(a)
    a = a+5555
    print(a)

change_value()

print('')
### 也可以通过函数参数传递：
b = 89
def new_fun(b):
    b = b+1
    print(b)

new_fun(b)
print(b)